class Config(object):
    def __init__(self):
        # model configs
        self.input_channels = 20
        self.kernel_size = 8
        self.stride = 1
        self.final_out_channels = 6
        self.hidden_dim = 6
        self.kernel_nums = 20

        self.num_classes = 7 # lithofacies classes num
        self.dropout = 0.2
        self.features_len = 12  # real :
        self.seq_len = 6
        self.data_seq_len = 20
        self.data_input_dim = 6
        self.model_output_features_len = 12
        self.model_output_dim = 6 # features_len *  model_output_dim * 3

        # training configs
        self.num_epoch = 10 # 100

        # optimizer parameters
        self.beta1 = 0.9
        self.beta2 = 0.99
        self.lr = 1e-3 # 5e-3  3e-4

        self.num_patches = 4

        # data parameters
        self.drop_last = True
        self.batch_size = 128

        self.Context_Cont = Context_Cont_configs()
        self.TC = TC()
        self.augmentation = augmentations()


class augmentations(object):
    def __init__(self):
        self.jitter_scale_ratio = 1.1
        self.jitter_ratio = 0.8
        # self.max_seg = 8
        self.max_seg = 6


class Context_Cont_configs(object):
    def __init__(self):
        self.temperature = 0.2
        self.use_cosine_similarity = True


class TC(object):
    def __init__(self):
        self.hidden_dim = 100
        # self.timesteps = 6
        self.timesteps = 3
        self.logsoftmaxdim = -1
